import axios from "axios";
import { ElMessage } from "element-plus";
import { logout } from '@/common'

const instance = axios.create({
  baseURL: "/api",
  timeout: 60000,
});

// 请求拦截器
instance.interceptors.request.use(
  (config) => {
    const token = localStorage.getItem("token")
    // 请求头 配置 token, 在每个页面请求头里都要有
    if (config.headers) {
      config.headers["Authorization"] = token
    }
    return config;
  },
  (err) => Promise.reject(err)
);

// 响应拦截器
instance.interceptors.response.use(
  // 请求成功, 业务失败, 业务状态码错误
  response => {
    const data = response.data as IResponse<any> //类型转换
    if (data.code === 401) {
      // token过期 访问权限限制
      logout(undefined, () => {
        ElMessage.warning("token过期，请重新登录");
        return;
      });
    }
    if (data.code === 500) {
      ElMessage.error('操作频繁，请稍后再试');
      return;
    }
    if (data.code !== 200) {
      ElMessage.error("业务失败，错误信息：" + data.message);
      return;
    }
    return response.data;
  },
  // 请求失败, 状态码不是200
  err => {
    ElMessage.error("请求失败，错误信息：" + err.message);
    Promise.reject(err)
  }
)

export default instance